package org.web.accesscontrollist.sdk.dto;

import lombok.Getter;
import lombok.Setter;
import org.web.accesscontrollist.sdk.dto.constant.AclResourceConstant;


import javax.validation.constraints.*;

@Setter
@Getter
@NotNull(message = "DefaultAclResourceDefinitionDTO 不能为空")
public class DefaultAclResourceDefinition implements AclResourceConstant {

    /**
     * 操作员信息，上次修改记录的操作人员工号，唯一标识操作人员。用于鉴权，校验是否有写权限，不允许为空。
     */
    @NotNull(message = "operatorDTO can't be null. ")
    private OperatorDTO operatorDTO;

    /**
     * 业务线，内部权限管理都围绕业务线展开。
     */
    public String getBusinessLine() {
        return operatorDTO.getBusinessLine();
    }

    /**
     * 允许查询, 用于表示资源信息是否允许被所有人查看。Y，表示允许，N表示不允许。
     */
    @NotBlank(message = "definitionAllowShow can't be blank. ")
    @Size(max = 1)
    private String definitionAllowShow = "N";

    /**
     * 拓展值，供业务域自行扩展。
     */
    @Size(max = 1000)
    private String definitionExtendsValue;

    /**
     * 操作规则，按需使用，指定控制资源信息的修改校验的规则。
     */
    @Size(max = 1000)
    private String definitionOperateRule;

    /**
     * 描述，描述资源定义。
     */
    @NotBlank(message = "definitionDescription can't be blank. ")
    @Size(max = 1000)
    private String definitionDescription = "默认设置资源定义描述，后续请进行修改。";

    /**
     * 最大层级，用于定义资源的最大层级。
     */
    @NotNull(message = "maxLevel can't be null. ")
    private Integer maxLevel = 0;

    /**
     * 操作员ID，上次修改记录的操作人员工号，唯一标识操作人员。
     */
    public String getOperatorNum() {
        return operatorDTO.getOperatorNum();
    }

    /**
     * 操作员，上次修改记录的操作人员名称。
     */
    public String getOperatorName() {
        return operatorDTO.getOperatorName();
    }


}
